TARGET := test

CC := g++

#注意每行后面不要有空格，否则会算到目录名里面，导致问题

SRC_DIR = src

BUILD_DIR = tmp

OBJ_DIR = $(BUILD_DIR)/obj

DEPS_DIR = $(BUILD_DIR)/deps

#这里添加其他头文件路径

INC_DIR = \

-I./include

#这里添加编译参数

CC_FLAGS := $(INC_DIR) -g

#查找src_dir下面包含子目录的所有cpp文件

SOURCES = $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.cpp))

OBJS = $(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SOURCES))))

DEPS = $(addprefix $(DEPS_DIR)/, $(patsubst %.cpp,%.d,$(notdir $(SOURCES))))

$(TARGET):$(OBJS)

$(CC) $^ -o $@

#编译之前要创建OBJ目录，确保目录存在

$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp

if [ ! -d $(OBJ_DIR) ]; then mkdir -p $(OBJ_DIR); fi;\

$(CC) -c $(CC_FLAGS) -o $@ $<

#编译之前要创建DEPS目录，确保目录存在

#前面加@表示隐藏命令的执行打印


